package com.hdu.careerplan.service;

import com.hdu.careerplan.pojo.dto.CityJobChoiceListDTO;
import com.hdu.careerplan.pojo.dto.CityJobDTO;
import com.hdu.careerplan.pojo.dto.TrendTimeDTO;
import com.hdu.careerplan.pojo.pythonData.SalaryData;
import com.hdu.careerplan.pojo.vo.TechListDataVO;
import com.hdu.careerplan.pojo.vo.TrendVO;

import java.io.IOException;
import java.util.List;

public interface DataAnalysisService {

    /**
     * 初始用户在选择了一个城市和一个岗位的时候，返回对应的值
     *
     * @param cityJobDTO 前端传值为城市和岗位名
     * @return 返回一个城市一个岗位的相关信息
     * @author ZHR
     */
    SalaryData salaryInitialChoice(CityJobDTO cityJobDTO) throws IOException, InterruptedException;

    /**
     * 一个城市不同岗位的数据，和一个岗位不同城市的数据
     *
     * @param flag                 0：一个城市不同岗位的数据；1：一个岗位不同城市的数据
     * @param cityJobChoiceListDTO 城市 岗位 列表
     * @return 薪资列表
     * @author JacksonZHR
     */
    List<SalaryData> compareSalary(int flag, CityJobChoiceListDTO cityJobChoiceListDTO) throws IOException, InterruptedException;

    /**
     * 初始用户在选择了一个城市和一个岗位的时候，返回对应的值
     *
     * @param cityJobDTO 前端传值为城市和岗位名
     * @return 返回一个城市一个岗位的相关信息
     * @author JacksonZHR
     */
    TechListDataVO techInitialChoice(CityJobDTO cityJobDTO) throws IOException, InterruptedException;

    /**
     * 一个城市不同岗位的数据，和一个岗位不同城市的数据
     *
     * @param flag                 0：一个城市不同岗位的数据；1：一个岗位不同城市的数据
     * @param cityJobChoiceListDTO 城市 岗位 列表
     * @return 技术列表
     * @author JacksonZHR
     */
    List<TechListDataVO> compareTech(int flag, CityJobChoiceListDTO cityJobChoiceListDTO) throws IOException, InterruptedException;


    /**
     * 获取并聚合趋势的数据
     * @param trendTimeDTO 前端数据格式
     * @return 数据列表
     */
    List<TrendVO> getAndGroupTrendDate(TrendTimeDTO trendTimeDTO);
}
